home *** CD-ROM | disk | FTP | other *** search
/ C & C++ Multimedia Cyber Classroom / C and C++ Multimedia Cyber Classroom (Prentice Hall) (1998).iso / cpphtp2 / code.jar / code / ch21 / fig21_03.txt < prev    next >
Text File  |  1998-02-27  |  1KB  |  40 lines

  1. 1   // Fig. 21.3: fig21_03.cpp
  2. 2   // Demonstrating the const_cast operator. 
  3. 3   #include <iostream.h>
  4. 4         
  5. 5   class ConstCastTest {
  6. 6   public:
  7. 7      void setNumber( int );
  8. 8      int getNumber() const;
  9. 9      void printNumber() const;
  10. 10  private:
  11. 11     int number;
  12. 12  };
  13. 13  
  14. 14  void ConstCastTest::setNumber( int num ) { number = num; }
  15. 15  
  16. 16  int ConstCastTest::getNumber() const { return number; }
  17. 17  
  18. 18  void ConstCastTest::printNumber() const
  19. 19  {
  20. 20     cout << "\nNumber after modification: ";
  21. 21  
  22. 22     // the expression number-- would generate compile error
  23. 23     // undo const-ness to allow modification
  24. 24     const_cast< ConstCastTest * >( this )->number--;
  25. 25  
  26. 26     cout << number << endl;
  27. 27  }
  28. 28  
  29. 29  int main()
  30. 30  {
  31. 31     ConstCastTest x;
  32. 32     x.setNumber( 8 );  // set private data number to 8
  33. 33     
  34. 34     cout << "Initial value of number: " << x.getNumber();
  35. 35  
  36. 36     x.printNumber();
  37. 37     return 0;
  38. 38  }
  39. 39  }
  40.